|
This page last changed on Aug 15, 2013 by kgomes.
In 2012, an effort started to design a communication backbone that would allow all MBARI assets to communicate easily across the organization. Much work has been done in computer science in the areas of message based systems over the years and this is an exploration of how those systems can make communications across MBARI assets much easier and more pervasive.
Communication/Messaging Systems
Technologies
Comparison
| Feature/Framework |
LCM |
MOOS |
Player |
RabbitMQ |
ZeroMQ |
Carmen (IPC) |
JAUS |
ROS |
RDS |
DDS |
Apache Kafka |
MQTT |
| Target App |
Real-time systems |
Robotic Vehicles
(Under water mostly) |
Robot control |
|
|
Robot control |
|
Robotics Development |
Robotics |
|
|
| Transport |
UDP Multicast |
TCP |
TCP |
|
|
TCP |
UDP |
- Shared Memory
- TCP (most common)
- UDP
- Spread
|
Mulitple
|
|
|
Communications
Model(s) |
pub/sub(push) |
pub/sub (pull) |
pub/sub(pull) |
|
|
pub/sub (push) |
routed message |
|
service |
|
|
| Messages Duplicated? |
N |
Y |
Y |
|
|
Y |
Y |
Y |
Y |
|
|
| Type safe? |
Y |
N |
N |
|
|
N |
N |
N |
Y |
|
|
Marshalling
Technique |
Automatice |
Manual - Free
form ASCII |
XDR (automatic for C) |
Manual |
|
Partial - users must keep an ASCII description
of types in sync with a C construct |
Manual |
Automatic - Type specification language
similar to C |
Automatic |
|
|
Server/
Central Hub? |
N |
Y |
Y |
Y |
|
Y |
N |
|
|
|
|
| Pros |
- Tools for introspection and analysis of the messaging traffic and the messages themselves
|
|
|
|
|
|
|
|
|
|
|
| Cons |
|
|
- If subscriber can't
keep up with publisher,
TCP buffers can fill
hurting performance
|
|
|
Keeping ASCII/struct in sync
for marshalling is error prone due to
machines having different word sizes |
- Small subspace is available for user-defined types
- Messages limited to 4096 bytes
- Each node has to have globally unique ID
|
- little endian, so big endian systems
supported
|
- More difficult to inject previously recorded data
|
|
|
| Platforms |
- C
- Java
- Python
- MATLAB
- C++ (compatible)
- Objective-C (compatible)
|
C++ |
|
|
|
|
C |
|
.NET |
|
|
Marshalling
Technologies
- Protocol Buffers
- LCM
- Avro
- Thrift
- MessagePack
Comparisons
| Protocol Buffers |
LCM |
Avro |
Thrift |
MessagePack |
- Protocol Buffers, Avro, Thrift & MessagePack
|